home *** CD-ROM | disk | FTP | other *** search
/ Freelog 125 / Freelog_MarsAvril2015_No125.iso / Musique / Quod Libet / quodlibet-3.3.0-installer.exe / bin / quodlibet / qltk / maskedbox.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2014-12-31  |  6KB  |  122 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.7)
  3.  
  4. from gi.repository import Gtk, Pango
  5. from quodlibet import qltk
  6. from quodlibet.qltk.views import RCMHintedTreeView
  7. from quodlibet.util.path import fsdecode
  8. from quodlibet.util import connect_obj
  9.  
  10. class ConfirmMaskedRemoval(qltk.Message):
  11.     
  12.     def __init__(self, parent):
  13.         title = _('Are you sure you want to remove all songs?')
  14.         description = _('The selected songs will be removed from the library.')
  15.         super(ConfirmMaskedRemoval, self).__init__(Gtk.MessageType.WARNING, parent, title, description, Gtk.ButtonsType.NONE)
  16.         self.add_buttons(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_DELETE, Gtk.ResponseType.YES)
  17.  
  18.  
  19.  
  20. class MaskedBox(Gtk.HBox):
  21.     
  22.     def __init__(self, library):
  23.         super(MaskedBox, self).__init__(spacing = 6)
  24.         self.model = model = Gtk.ListStore(object)
  25.         view = RCMHintedTreeView(model = model)
  26.         view.set_fixed_height_mode(True)
  27.         view.set_headers_visible(False)
  28.         self.view = view
  29.         menu = Gtk.Menu()
  30.         unhide_item = qltk.MenuItem(_('Unhide'), Gtk.STOCK_ADD)
  31.         connect_obj(unhide_item, 'activate', self._MaskedBox__unhide, view, library)
  32.         menu.append(unhide_item)
  33.         remove_item = Gtk.ImageMenuItem(label = Gtk.STOCK_REMOVE, use_stock = True)
  34.         connect_obj(remove_item, 'activate', self._MaskedBox__remove, view, library)
  35.         menu.append(remove_item)
  36.         menu.show_all()
  37.         view.connect('popup-menu', self._MaskedBox__popup, menu)
  38.         sw = Gtk.ScrolledWindow()
  39.         sw.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
  40.         sw.set_shadow_type(Gtk.ShadowType.IN)
  41.         sw.add(view)
  42.         sw.set_size_request(-1, max(sw.size_request().height, 80))
  43.         
  44.         def cdf(column, cell, model, iter, data):
  45.             row = model[iter]
  46.             cell.set_property('text', fsdecode(row[0]))
  47.  
  48.         
  49.         def cdf_count(column, cell, model, iter, data):
  50.             mount = model[iter][0]
  51.             song_count = len(library.get_masked(mount))
  52.             text = ngettext('%d song', '%d songs', song_count) % song_count
  53.             cell.set_property('text', text)
  54.  
  55.         column = Gtk.TreeViewColumn(None)
  56.         column.set_sizing(Gtk.TreeViewColumnSizing.FIXED)
  57.         render = Gtk.CellRendererText()
  58.         render.set_property('ellipsize', Pango.EllipsizeMode.END)
  59.         column.pack_start(render, True)
  60.         column.set_cell_data_func(render, cdf)
  61.         render = Gtk.CellRendererText()
  62.         render.props.sensitive = False
  63.         column.pack_start(render, False)
  64.         column.set_cell_data_func(render, cdf_count)
  65.         view.append_column(column)
  66.         unhide = qltk.Button(_('Unhide'), Gtk.STOCK_ADD)
  67.         connect_obj(unhide, 'clicked', self._MaskedBox__unhide, view, library)
  68.         remove = Gtk.Button(stock = Gtk.STOCK_REMOVE)
  69.         selection = view.get_selection()
  70.         selection.set_mode(Gtk.SelectionMode.MULTIPLE)
  71.         selection.connect('changed', self._MaskedBox__select_changed, remove, unhide)
  72.         selection.emit('changed')
  73.         connect_obj(remove, 'clicked', self._MaskedBox__remove, view, library)
  74.         vbox = Gtk.VBox(spacing = 6)
  75.         vbox.pack_start(unhide, False, True, 0)
  76.         vbox.pack_start(remove, False, True, 0)
  77.         self.pack_start(sw, True, True, 0)
  78.         self.pack_start(vbox, False, True, 0)
  79.         for path in library.masked_mount_points:
  80.             model.append(row = [
  81.                 path])
  82.         
  83.         if not len(model):
  84.             self.set_sensitive(False)
  85.         for child in self.get_children():
  86.             child.show_all()
  87.         
  88.  
  89.     
  90.     def __popup(self, view, menu):
  91.         return view.popup_menu(menu, 0, Gtk.get_current_event_time())
  92.  
  93.     
  94.     def __unhide(self, view, library):
  95.         selection = view.get_selection()
  96.         (model, paths) = selection.get_selected_rows()
  97.         for path in paths:
  98.             library.unmask(model[path][0])
  99.         
  100.         view.remove_selection()
  101.  
  102.     
  103.     def __select_changed(self, selection, *buttons):
  104.         active = bool(selection.count_selected_rows())
  105.         for button in buttons:
  106.             button.set_sensitive(active)
  107.         
  108.  
  109.     
  110.     def __remove(self, view, library):
  111.         dialog = ConfirmMaskedRemoval(self)
  112.         response = dialog.run()
  113.         if response == Gtk.ResponseType.YES:
  114.             selection = view.get_selection()
  115.             (model, paths) = selection.get_selected_rows()
  116.             for path in paths:
  117.                 library.remove_masked(model[path][0])
  118.             
  119.             view.remove_selection()
  120.  
  121.  
  122.